231. GKE node cpu limit 計算

WHY

線上服務的pod,CPU飆高,
導致所屬的node,CPU也跟著衝高,合理。
但同仁問了一句那個limit是啥。

Note

231-fig.1.png

那條紅色的線,
原本以為那是某個node的cpu最大值,
但我這個node的最大cpu只有4而已。

所以排除了CPU的上限,檢視 Metrics Explorer
指標上面寫Limit cores
再根據 GKE system metrics,得知這個metrics是指 CPU cores limit of the container。

但我又懶得一個一個查這個node有多少limit。
於是

kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node name> -o custom-columns=:metadata.name,:metadata.namespace --no-headers | while read -r name ns; do
  echo "$name and $ns"
  kubectl get pod $name -n $ns -o jsonpath='{.spec.containers[*].resources.limits.cpu}' | xargs -n1 echo "  CPU Limit: "
done

本來是用for,但在切割name 與 namespace出了點問題。
最後才改用while。

這邊將值總和計算出來後是6.2,數值一樣,謎底解開了。

ref. Command line tool (kubectl)